<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

</body>
</html>
<script>
    /*
    promise.all():将多个promise实例,包装成一个新的promise实例
    iterable可
    * */
    // let p1=new Promise((resolve, reject) => {
    //     //第二个以后的参数作为函数的第一个参数传递进去
    //     setTimeout(resolve,2000,"p1")
    // });
    // let p2=new Promise((resolve, reject) => {
    //     //第二个以后的参数作为函数的第一个参数传递进去
    //     setTimeout(resolve,200,"p2")
    // });
    // let p3=new Promise((resolve, reject) => {
    //     //第二个以后的参数作为函数的第一个参数传递进去
    //     setTimeout(resolve,100,"p3")
    // });
    // let pAll=Promise.all([p1,p2,p3]);
    // pAll.then(success=>{
    //     //结论1:返回数组,返回的值的顺序是传入的顺序
    //     console.log(success);
    // },
    //     err=>{
    //     console.log(err);
    //     }
    // )
//    Promise.race(iterable):一旦任意一个promise实例发生变化,pAll就是跟着变化

    // let p1=new Promise((resolve, reject) => {
    //     //第二个以后的参数作为函数的第一个参数传递进去
    //     setTimeout(resolve,2000,"p1")
    // });
    // let p2=new Promise((resolve, reject) => {
    //     //第二个以后的参数作为函数的第一个参数传递进去
    //     setTimeout(resolve,200,"p2")
    // });
    // let p3=new Promise((resolve, reject) => {
    //     //第二个以后的参数作为函数的第一个参数传递进去
    //     setTimeout(resolve,100,"p3")
    // });
    // let pAll=Promise.race([p1,p2,p3]);
    // pAll.then(success=>{
    //         // 那个先传递进来
    //         console.log(success);
    //     },
    //     err=>{
    //         console.log(err);
    //     }
    // )
//    promise.allSettled(iterable)
//     返回一个在所有给定的promise实例都已经创建成功或者失败后的promise,并且
//     let p1=new Promise((resolve, reject) => {
//         //第二个以后的参数作为函数的第一个参数传递进去
//         setTimeout(resolve,2000,"p1")
//     });
//     let p2=new Promise((resolve, reject) => {
//         //第二个以后的参数作为函数的第一个参数传递进去
//         setTimeout(resolve,200,"p2")
//     });
//     let p3=new Promise((resolve, reject) => {
//         //第二个以后的参数作为函数的第一个参数传递进去
//         setTimeout(resolve,100,"p3")
//     });
//     let pAll=Promise.allSettled([p1,p2,p3]);
//     pAll.then(success=>{
//             //结论1:返回数组,返回的值的顺序是传入的顺序
//             console.log(success);
//         },
//         err=>{
//             console.log(err);
//         }
//     )
//   promise,any()和promise.race()有一点不同:就是不会因为某个promise实例变成rejected失败状态而结束
    let p1=new Promise((resolve, reject) => {
        //第二个以后的参数作为函数的第一个参数传递进去
        setTimeout(resolve,2000,"p1")
    });
    let p2=new Promise((resolve, reject) => {
        //第二个以后的参数作为函数的第一个参数传递进去
        setTimeout(resolve,200,"p2")
    });
    let p3=new Promise((resolve, reject) => {
        //第二个以后的参数作为函数的第一个参数传递进去
        setTimeout(reject,100,"p3")
    });
    let pAll=Promise.any([p1,p2,p3]);
    pAll.then(success=>{
            //结论1:返回数组,返回的值的顺序是传入的顺序
            console.log(success);
        },
        err=>{
            console.log(err);
        }
    )
</script>